<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
	<meta name="theme-color" content="#33474d">
	<title>Linux 命令- free | 失落的乐章</title>
	<link rel="stylesheet" href="/css/style.css" />
	
      <link rel="alternate" href="/atom.xml" title="失落的乐章" type="application/atom+xml">
    
</head>

<body>

	<header class="header">
		<nav class="header__nav">
			
				<a href="/archives" class="header__link">Archive</a>
			
				<a href="/tags" class="header__link">Tags</a>
			
				<a href="/atom.xml" class="header__link">RSS</a>
			
		</nav>
		<h1 class="header__title"><a href="/">失落的乐章</a></h1>
		<h2 class="header__subtitle">技术面前，永远都是学生。</h2>
	</header>

	<main>
		<article>
	
		<h1>Linux 命令- free</h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux命令/">Linux命令</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中，free命令是最经常使用的命令之一。</p>
<h2 id="1．命令格式"><a href="#1．命令格式" class="headerlink" title="1．命令格式"></a>1．命令格式</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">free [参数]</div></pre></td></tr></table></figure>
<h2 id="2．命令功能"><a href="#2．命令功能" class="headerlink" title="2．命令功能"></a>2．命令功能</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;free 命令显示系统使用和空闲的内存情况，包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略</p>
<h2 id="3．命令参数"><a href="#3．命令参数" class="headerlink" title="3．命令参数"></a>3．命令参数</h2><ul>
<li>-b 　以Byte为单位显示内存使用情况。 </li>
<li>-k 　以KB为单位显示内存使用情况。 </li>
<li>-m 　以MB为单位显示内存使用情况。</li>
<li>-g   以GB为单位显示内存使用情况。 </li>
<li>-o 　不显示缓冲区调节列。 </li>
<li>-s&lt;间隔秒数&gt; 　持续观察内存使用状况。 </li>
<li>-t 　显示内存总和列。 </li>
<li>-V 　显示版本信息。 </li>
</ul>
<h2 id="4．使用实例"><a href="#4．使用实例" class="headerlink" title="4．使用实例"></a>4．使用实例</h2><h3 id="实例1：显示内存使用情况"><a href="#实例1：显示内存使用情况" class="headerlink" title="实例1：显示内存使用情况"></a>实例1：显示内存使用情况</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">free</div><div class="line">free -g</div><div class="line">free -m</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div></pre></td><td class="code"><pre><div class="line">[root@SF1150 service]<span class="comment"># free</span></div><div class="line">             total       used       free     shared    buffers     cached</div><div class="line">Mem:      32940112   30841684    2098428          0    4545340   11363424</div><div class="line">-/+ buffers/cache:   14932920   18007192</div><div class="line">Swap:     32764556    1944984   30819572</div><div class="line">[root@SF1150 service]<span class="comment"># free -g</span></div><div class="line">             total       used       free     shared    buffers     cached</div><div class="line">Mem:            31         29          2          0          4         10</div><div class="line">-/+ buffers/cache:         14         17</div><div class="line">Swap:           31          1         29</div><div class="line">[root@SF1150 service]<span class="comment"># free -m</span></div><div class="line">             total       used       free     shared    buffers     cached</div><div class="line">Mem:         32168      30119       2048          0       4438      11097</div><div class="line">-/+ buffers/cache:      14583      17584</div><div class="line">Swap:        31996       1899      30097</div></pre></td></tr></table></figure>
<h4 id="说明"><a href="#说明" class="headerlink" title="说明"></a>说明</h4><h5 id="下面是对这些数值的解释："><a href="#下面是对这些数值的解释：" class="headerlink" title="下面是对这些数值的解释："></a>下面是对这些数值的解释：</h5><ul>
<li>total:总计物理内存的大小。</li>
<li>used:已使用多大。</li>
<li>free:可用有多少。</li>
<li>Shared:多个进程共享的内存总额。</li>
<li>Buffers/cached:磁盘缓存的大小。</li>
<li>第三行(-/+ buffers/cached):</li>
<li>used:已使用多大。</li>
<li>free:可用有多少。</li>
<li>第四行是交换分区SWAP的，也就是我们通常所说的虚拟内存。</li>
<li>区别：第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。 这两个的区别在于使用的角度来看，第一行是从OS的角度来看，因为对于OS，buffers/cached 都是属于被使用，所以他的可用内存是2098428KB,已用内存是30841684KB,其中包括，内核（OS）使用+Application(X, oracle,etc)使用的+buffers+cached.</li>
<li>第三行所指的是从应用程序角度来看，对于应用程序来说，buffers/cached 是等于可用的，因为buffer/cached是为了提高文件读取的性能，当应用程序需在用到内存的时候，buffer/cached会很快地被回收。</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;所以从应用程序的角度来说，可用内存=系统free memory+buffers+cached。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如本机情况的可用内存为：</p>
<p>18007156=2098428KB+4545340KB+11363424KB</p>
<h5 id="接下来解释什么时候内存会被交换，以及按什么方交换。"><a href="#接下来解释什么时候内存会被交换，以及按什么方交换。" class="headerlink" title="接下来解释什么时候内存会被交换，以及按什么方交换。"></a>接下来解释什么时候内存会被交换，以及按什么方交换。</h5><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;当可用内存少于额定值的时候，就会开会进行交换.如何看额定值：</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">cat /proc/meminfo</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div></pre></td><td class="code"><pre><div class="line">[root@SF1150 service]<span class="comment"># cat /proc/meminfo</span></div><div class="line">MemTotal:     32940112 kB</div><div class="line">MemFree:       2096700 kB</div><div class="line">Buffers:       4545340 kB</div><div class="line">Cached:       11364056 kB</div><div class="line">SwapCached:    1896080 kB</div><div class="line">Active:       22739776 kB</div><div class="line">Inactive:      7427836 kB</div><div class="line">HighTotal:           0 kB</div><div class="line">HighFree:            0 kB</div><div class="line">LowTotal:     32940112 kB</div><div class="line">LowFree:       2096700 kB</div><div class="line">SwapTotal:    32764556 kB</div><div class="line">SwapFree:     30819572 kB</div><div class="line">Dirty:             164 kB</div><div class="line">Writeback:           0 kB</div><div class="line">AnonPages:    14153592 kB</div><div class="line">Mapped:          20748 kB</div><div class="line">Slab:           590232 kB</div><div class="line">PageTables:      34200 kB</div><div class="line">NFS_Unstable:        0 kB</div><div class="line">Bounce:              0 kB</div><div class="line">CommitLimit:  49234612 kB</div><div class="line">Committed_AS: 23247544 kB</div><div class="line">VmallocTotal: 34359738367 kB</div><div class="line">VmallocUsed:    278840 kB</div><div class="line">VmallocChunk: 34359459371 kB</div><div class="line">HugePages_Total:     0HugePages_Free:      0HugePages_Rsvd:      0Hugepagesize:     2048 kB</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;交换将通过三个途径来减少系统中使用的物理页面的个数：　 </p>
<ol>
<li>减少缓冲与页面cache的大小， </li>
<li>将系统V类型的内存页面交换出去，　 </li>
<li>换出或者丢弃页面。(Application 占用的内存页，也就是物理内存不足）。 </li>
</ol>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;事实上，少量地使用swap是不是影响到系统性能的。</p>
<h5 id="那buffers和cached都是缓存，两者有什么区别呢？"><a href="#那buffers和cached都是缓存，两者有什么区别呢？" class="headerlink" title="那buffers和cached都是缓存，两者有什么区别呢？"></a>那buffers和cached都是缓存，两者有什么区别呢？</h5><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式：Buffer Cache和Page Cache。前者针对磁盘块的读写，后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;磁盘的操作有逻辑级（文件系统）和物理级（磁盘块），这两种Cache就是分别缓存逻辑和物理级数据的。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Page cache实际上是针对文件系统的，是文件的缓存，在文件层面上的数据会缓存到page cache。文件的逻辑层需要映射到实际的物理磁盘，这种映射关系由文件系统来完成。当page cache的数据需要刷新时，page cache中的数据交给buffer cache，因为Buffer Cache就是缓存磁盘块的。但是这种处理在2.6版本的内核之后就变的很简单了，没有真正意义上的cache操作。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Buffer cache是针对磁盘块的缓存，也就是在没有文件系统的情况下，直接对磁盘进行操作的数据会缓存到buffer cache中，例如，文件系统的元数据都会缓存到buffer cache中。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;简单说来，page cache用来缓存文件数据，buffer cache用来缓存磁盘数据。在有文件系统的情况下，对文件操作，那么数据会缓存到page cache，如果直接采用dd等工具对磁盘进行读写，那么数据会缓存到buffer cache。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少.如果常常swap用很多,可能你就要考虑加物理内存了.这也是linux看内存是否够用的标准.</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果是应用服务器的话，一般只看第二行，+buffers/cache,即对应用程序来说free的内存太少了，也是该考虑优化程序或加内存了。</p>
<h3 id="实例2：以总和的形式显示内存的使用信息"><a href="#实例2：以总和的形式显示内存的使用信息" class="headerlink" title="实例2：以总和的形式显示内存的使用信息"></a>实例2：以总和的形式显示内存的使用信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">free -t</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">[root@SF1150 service]<span class="comment">#  free -t </span></div><div class="line">             total       used       free     shared    buffers     cached</div><div class="line">Mem:      32940112   30845024    2095088          0    4545340   11364324</div><div class="line">-/+ buffers/cache:   14935360   18004752Swap:     32764556    1944984   30819572Total:    65704668   32790008   32914660[root@SF1150 service]<span class="comment">#</span></div></pre></td></tr></table></figure>
<h3 id="实例3：周期性的查询内存使用信息"><a href="#实例3：周期性的查询内存使用信息" class="headerlink" title="实例3：周期性的查询内存使用信息"></a>实例3：周期性的查询内存使用信息</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>命令</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">free -s 10</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>输出</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">[root@SF1150 service]<span class="comment">#  free -s 10</span></div><div class="line">             total       used       free     shared    buffers     cached</div><div class="line">Mem:      32940112   30844528    2095584          0    4545340   11364380</div><div class="line">-/+ buffers/cache:   14934808   18005304Swap:     32764556    1944984   30819572</div><div class="line">             total       used       free     shared    buffers     cached</div><div class="line">Mem:      32940112   30843932    2096180          0    4545340   11364388</div><div class="line">-/+ buffers/cache:   14934204   18005908Swap:     32764556    1944984   30819572</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>说明</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;每10s 执行一次命令</p>

	

	
		<span class="different-posts"><a href="/2017/10/12/2. Linux 命令/47. Linux 命令- free/" onclick="window.history.go(-1); return false;">⬅️ Go back </a></span>

	

</article>

	</main>

	<footer class="footer">
	<div class="footer-content">
		
	      <div class="footer__element">
	<p>Hi there, <br />welcome to my Blog glad you found it. Have a look around, will you?</p>
</div>

	    
	      <div class="footer__element">
	<h5>Check out</h5>
	<ul class="footer-links">
		<li class="footer-links__link"><a href="/archives">Archive</a></li>
		
		  <li class="footer-links__link"><a href="/atom.xml">RSS</a></li>
	    
		<li class="footer-links__link"><a href="/about">about page</a></li>
		<li class="footer-links__link"><a href="/tags">Tags</a></li>
		<li class="footer-links__link"><a href="/categories">Categories</a></li>
	</ul>
</div>

	    

		<div class="footer-credit">
			<span>© 2017 失落的乐章 | Powered by <a href="https://hexo.io/">Hexo</a> | Theme <a href="https://github.com/HoverBaum/meilidu-hexo">MeiliDu</a></span>
		</div>

	</div>


</footer>



</body>

</html>
